/*
* 
* Fichier source projet intel Acceler8 sous license GNU GPL v3.
* Voir http://www.gnu.org/copyleft/gpl.html pour plus d'informations
* La license est egalement disponible dans le repertoire /doc
* 
* Cree le : lundi 31 octobre 2011 à 17 : 11.
* Auteurs : Axel MOINET et Arnaud DURAND.
* 
* Nom de fichier : lecturefichier.h
* Chemin du fichier : src/classes/lecturefichier/lecturefichier.h
* 
* Description : Declaration de la classe de lecture de fichier
*	Implementation du pipeline de lecture de fichier.
* 
*/

#ifndef LECTUREFICHIER_H_INCLUDED
#define LECTUREFICHIER_H_INCLUDED

#include "tbb/pipeline.h"
#include "tbb/concurrent_vector.h"
#include "../../includes/typedefs.h"

using namespace tbb ;

class lectureFichier {

public :
	//Constructeursde la classe
	lectureFichier();

	/*
	 * Passage du descripteur de fichier en entrée construction d'un tableau intermédiaire contenant les nombres
	 * puis passage au second thread qui calcule les sommes de préfixe
	 */
	lectureFichier(FILE *p_fichier, tableauSommePrefixes *p_Ptab);
	lectureFichier(int p_nbJetons, FILE *p_fichier, tableauSommePrefixes *p_Ptab);

	//Destructeur de la classe
	~lectureFichier();

	/*
	 * Lancement du pipeline de lecture de fichier
	 */
	void runReadFilePipeline();

	/*
	 * Création de la chaine de filtre de traitement pour le pipeline
	 */
	void makePipeline();

private :
	//Fonctions appellees uniquement par la classe elle-même

	/*
	 * Lancement d'une requete pour le début du calcul de Cgh
	 */
	int requestForCgh();

	//Variables de la classe

	//Nombre de jetons utilises dans le pipeline
	int nbJetons;
	FILE *fichierEntree;

	//Pointeur vers le tableau de somme de préfixes
	tableauSommePrefixes *Ptab;

	//Filtre global à remplir et à utiliser pour le pipeline
	tbb::pipeline pipeline;
};

#endif
